From news-rocq!jussieu.fr!ciril.fr!isdnet!newsfeed.nacamar.de!newsfeed.nacamar.de!tank.news.pipex.net!pipex!bore.news.pipex.net!pipex!not-for-mail Sat Aug 7 20:28:50 1999 Article: 10512 of rec.games.corewar Path: news-rocq!jussieu.fr!ciril.fr!isdnet!newsfeed.nacamar.de!newsfeed.nacamar.de!tank.news.pipex.net!pipex!bore.news.pipex.net!pipex!not-for-mail From: Robert Macrae Newsgroups: rec.games.corewar Subject: One Fat Lady RIP Date: Sat, 07 Aug 1999 14:58:25 +0100 Organization: UUNET WorldCom server (post doesn't reflect views of UUNET WorldCom Lines: 177 Message-ID: <37AC3B81.4858@dial.pipex.com> Reply-To: ff95@dial.pipex.com NNTP-Posting-Host: userl953.uk.uudial.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: lure.pipex.net 934034200 12402 193.149.77.4 (7 Aug 1999 13:56:40 GMT) X-Complaints-To: abuse@uk.uu.net NNTP-Posting-Date: 7 Aug 1999 13:56:40 GMT X-Mailer: Mozilla 3.04 (WinNT; I) Xref: news-rocq rec.games.corewar:10512 > KOTH.ORG: Rocking-Chair ICWS vs. One Fat Lady on Annual ICWS Tournament > Sat, 31 Jul 1999 10:35:55 -0400 (EDT) > ... > 21 21/ 30/ 50 One Fat Lady Robert Macrae 112 58 I am sorry to see the old lady go, though it is amazing that she held on for so long given her various handicaps. OFL was written for, and won, the final round of NSFCWT back in 1995. Quoting from the round instructions: > The challenge is to write a > warrior in a minimalist subset of ICWS'88 redcode, using only these opcodes: > > MOV ADD SUB JMP SPL CMP DAT > > and the addressing modes: # $ @ > (i.e. JMZ, JMN, DJN, SLT and < are not allowed in your warrior). OFL is a QS/Vamp/Imp, because the rules made imps hard to kill but vamps seemed to have a chance. After the competition I wrote a long description of the design process and resulting warrior, (available from Dejanews, author ff95@dial.pipex.com in December 1995 rgc) that goes over the whole design process. In terms of the permitted subset of instrucions I think it is quite a good warrior though with hindsight I am sure that there were inefficiencies. For example, it would have probably have been better to have one fewer process in the vamp, the vamp launch is terribly slow, and the pit is far from ideal. However, on the hill these details should be uniportant compared to the crushing disadvantage that the instruction subset appears to impose. I think that re-writing for the full set should permit a much more effective pit which, given the numbers of stone/imps around, should help a lot? This suggests to me that, if someone cares to do a modest rewrite under full '88 rules, the result could do well? >From the original article: > And here it is. Not as aggressive as Paul Kline's warrior, and much more of an > anti-imp specialist than Beppe's (which has an astounding 3rd place on the > _unrestricted_ '88 hill). As far as I can see, none of the various anti-imp measures > are very effective in their own right, but together they come good just often > enough... ;redcode-94 ;name One Fat Lady ;author Robert Macrae ;strategy QS + 54 process Vamp + 10 process 5 pt Imp. ;assert CORESIZE == 8192 ; Warrior based on half of the '88 instructions. It seems very ; hard to kill imps, so I expect a lot of draws. I'll need them... ; QS bombs with DATs because I can't guarantee that the trap will ; suicide. This will work best against other QSs. ; ; Vampire is launched without a SPL, to make a smaller target. ; Imp is compact (Nimbus?) style. ; Pit is not likely to achieve much, but does occasionally manage a coreclear. ; ------------------------------------------------------------- ; QS based on my favourite "special tournament version of Sauron" core equ (look+102) look qscan for 6 cmp look+((qscan+2)*100)+3, look+4096+((qscan+2)*100)+3 mov #look+((qscan+2)*100)-point+3, @point rof cmp #0, point jmp found qscan for 7 cmp look+((qscan+10)*100)+3, look+4096+((qscan+10)*100)+3 mov #look+((qscan+10)*100)-point+3, @point rof cmp #0, point jmp found qscan for 8 cmp look+((qscan+18)*100)+3, look+4096+((qscan+18)*100)+3 mov #look+((qscan+18)*100)-point+3, @point rof cmp #0, point jmp found jmp boot ; Or move boot code here? spb DAT #0, #-7 found cmp core, @point add #4096, point add #4096, point ; point now points to hit mov spb, @point add #45, point cmp core, @point ; Scan at +45, and add #52, point ; Set to +45 add #-52, point ; or to -7 loop mov spb, @point ; 40% bomber, backwards through point mov spb, @0 ; his code add #-14, point cmp core, @point ; Loop over whole target jmp point add #98, point mov spb, @point ; and one for luck! ; --------------------------------------------------------------- STEP equ 1396 OFFS equ -100 FANGOFF equ -41 STEPOFF equ -42 boot spl bootimp boot1 mov vamp-boot1, OFFS boot2 mov vamp-boot1, OFFS boot3 mov vamp-boot1, OFFS mov fang, boot1+OFFS+FANGOFF mov step, boot1+OFFS+STEPOFF spl 1 mov -1, 0 mov -1, 0 mov -1, 0 ; Get 18 processes spl 1 spl j1 ; spread evenly around spl j3 ; the vamp j2 jmp @boot3 j3 jmp @boot1 j1 jmp @boot1 ; and jump to it. Fang jmp pit-boot1-OFFS-FANGOFF, 0 vamp mov FANGOFF, @FANGOFF add vamp+STEPOFF, vamp+FANGOFF jmp vamp step dat #-STEP, #STEP pit SPL 2, boot1+OFFS+STEPOFF-5 MOV bomb, @pit ADD #-2731, pit JMP pit ; Overwritten. Bomb DAT #0, #0 ; ------------------------------------------- ; Nimbus launch for 5 point, 10 process imp. Size is a ; better protection than speed here. Currently has tail ; on the end of my code; not elegant. imp MOV 0, 3277 ; 2731 or 3277 (3 or 5 point) bootimp SPL 1 ; 2 MOV -1, 0 ; 3 MOV -1, 0 ; 5 SPL 1 ; 10 SPL 2 JMP @0, imp ADD #3277, -1 end -- Regards, Robert Macrae